package marionito.servlets;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import marionito.domaine.Case;
import marionito.domaine.Jeton;
import marionito.domaine.Joueur;
import marionito.domaine.JoueurPartie;
import marionito.domaine.Partie;
import marionito.usecases.GestionJoueurPartie;
import marionito.usecases.GestionParties;

/**
 * Servlet implementation class Reprendre
 */
@WebServlet(name = "reprendre.html")
public class Reprendre extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@EJB
	private GestionParties gestionParties;
	
	@EJB
	private GestionJoueurPartie gestionJoueurPartie;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		final String nomPartie = request.getParameter("nomPartie");
		String login = ((Joueur) request.getSession().getAttribute("joueur"))
				.getLogin();

		Partie partie = gestionParties.recherchePartie(nomPartie);
		gestionParties.chargerTout(partie);
		List<JoueurPartie> list = partie.getJoueursPartie();
		for (JoueurPartie jp : list) {
//			gestionJoueurPartie.chargerTout(jp);
			if (jp.getJoueur().getLogin() == login) {
				List<Case> listeCases = jp.getlistCases();

				int indice = jp.getPartie().getIndiceDernierJetonEnvoye();
				List<Jeton> listeJetons = new ArrayList<Jeton>();
				Map<Integer, Jeton> listeJetonsPartie = partie.getJetons();
				

				for (Case ca : listeCases) {
					boolean trouve = false;
					for (int i = 0; i < indice; i++) {
						if (ca.getJeton() == listeJetonsPartie.get(i)) {
							trouve = true;
						}
					}
					if(!trouve){
						listeJetons.add(ca.getJeton());
					}

				}

				request.setAttribute("listeJetons", listeJetons);
				request.setAttribute("listeCases", listeCases);
				request.setAttribute("valeurDe", jp.getPartie().lancerDe());
				getServletContext().getNamedDispatcher("jeu.html").forward(
						request, response);
				return;

			}
		}

		String message = "Oups Erreur!";
		request.setAttribute("msg", message);
		getServletContext().getNamedDispatcher("reprendre.html").forward(
				request, response);

	}

}
